<?php
/**
 * Created by PhpStorm.
 * User: summercode
 * Date: 2018/8/18
 * Time: 下午2:50
 */

namespace app\common\controller;

use app\common\model\DeviceModel;
use app\common\model\PhoneModel;
use app\common\model\SellerInfoModel;
use think\Controller;
use think\Request;

class BaseModel extends Controller
{

    public function json_data ($status, $code, $message, $data, $token) {
        return json([
            'status' => $status,
            'code' => $code,
            'message' => $message,
            'data' => $data,
            'token' => $token,
        ]);
    }

    public function wx_log($basename=null,$num=null,$msg=null)
    {
        //$msg = [2018-04-11 09:22:56]文件名：wxpay，第29行，[info]：日志信息
        $msg = '['.date("Y-m-d H:i:s").']'.'文件名：'.$basename.'，第'.$num.'行，'.'[info]：'.$msg;

        // 日志文件名：日期.txt
        $path = ROOT_PATH.DS.'public'. DS .'logs'. DS .date("Ymd").'.txt';

        file_put_contents($path, $msg.PHP_EOL,FILE_APPEND);
    }


    static public function createOID() {

        if (function_exists('com_create_guid')){
            return com_create_guid();
        }else{
            mt_srand((double)microtime()*10000);
            $charid = strtoupper(md5(uniqid(rand(), true)));
            $uuid =
                substr($charid, 0, 8)
                .substr($charid, 8, 4)
                .substr($charid,12, 4)
                .substr($charid,16, 4)
                .substr($charid,20,12);
            return 'ORDER' . $uuid;
        }

    }


    /**
     * @param string $url    需要访问的第三发接口地址
     * @param string $type   请求类型'post'还是'get'
     * @param string $res
     * @param string $arr
     * @return mixed
     */
    public function https_request($url, $type='get', $res='json',$arr = '') {
        // 初始化curl
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if ($type == 'post') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
        }
        // 检查是否有错误发生
        if(curl_errno($ch))
        {
            echo 'Curl error: ' . curl_error($ch);
        }
        //采集
        $output = curl_exec($ch);
        // 关闭
        curl_close($ch);
        return $output;
    }


    /**
     * 功能：生成二维码
     * @param string $qrData 手机扫描后要跳转的网址
     * @param string $qrLevel 默认纠错比例 分为L、M、Q、H四个等级，H代表最高纠错能力
     * @param string $qrSize 二维码图大小，1－10可选，数字越大图片尺寸越大
     * @param string $savePath 图片存储路径
     * @param string $savePrefix 图片名称前缀
     */
    function createQRcode($savePath, $qrData = 'PHP QR Code :)', $qrLevel = 'L', $qrSize = 4, $savePrefix = 'qrcode')
    {
        if (!isset($savePath)) return '';
        //设置生成png图片的路径
        $PNG_TEMP_DIR = $savePath;

        //检测并创建生成文件夹
        if (!file_exists($PNG_TEMP_DIR)) {
            mkdir($PNG_TEMP_DIR);
        }
        $filename = $PNG_TEMP_DIR . 'test.png';
        $errorCorrectionLevel = 'L';
        if (isset($qrLevel) && in_array($qrLevel, ['L', 'M', 'Q', 'H'])) {
            $errorCorrectionLevel = $qrLevel;
        }
        $matrixPointSize = 4;
        if (isset($qrSize)) {
            $matrixPointSize = min(max((int)$qrSize, 1), 10);
        }
        if (isset($qrData)) {
            if (trim($qrData) == '') {
                die('data cannot be empty!');
            }
            //生成文件名 文件路径+图片名字前缀+md5(名称)+.png
            $filename = $PNG_TEMP_DIR . $savePrefix . md5($qrData . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
            //开始生成
            \PHPQRCode\QRcode::png($qrData, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
        } else {
            //默认生成
            \PHPQRCode\QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
        }
        if (file_exists($PNG_TEMP_DIR . basename($filename)))
            return basename($filename);
        else
            return FALSE;
    }


    /**
     *  execl倒入数据到数据库中
     *
     * @param Request $request
     *
     */
    public function execlToDataBase(Request $request) {
        $objPHPExcel = \PHPExcel_IOFactory::load('./info888.xlsx');
        $arrExcel = $objPHPExcel->getSheet(0)->toArray();//获取其中的数据

        $num = count($arrExcel);

        $sellerinfo = new SellerInfoModel();

        $arr = array();
        for($i = 2; $i < $num; $i++) {
            $data = [

                'company_name' => $arrExcel[$i][0],
                'province' => $arrExcel[$i][1],
                'city' => $arrExcel[$i][2],
                'area' => $arrExcel[$i][3],
                'address' => $arrExcel[$i][4],
                'phone1' => $arrExcel[$i][6],
                'legal_person' =>  $arrExcel[$i][5],
                'phone2' => $arrExcel[$i][8],
                'company_person' => $arrExcel[$i][7],
            ];
            array_push($arr, $data);
        }

        $sellerinfo->saveAll($arr);

        echo 'ok';
    }

    public function execlToDataBase2(Request $request) {
        $objPHPExcel = \PHPExcel_IOFactory::load('./sb.xlsx');
        $arrExcel = $objPHPExcel->getSheet(1)->toArray();//获取其中的数据

        $num = count($arrExcel);

        $device = new DeviceModel();

        $arr = array();
        for($i = 2; $i < $num; $i++) {
            $data = [
                'device' => $arrExcel[$i][1],
            ];
            array_push($arr, $data);
        }

        $device->saveAll($arr);

        echo 'ok';
    }


    public function smsToPhone($phone) {

        //主帐号,对应开官网发者主账号下的 ACCOUNT SID
        $accountSid= '8a216da8679d0e9d0167c4f0838c174c';

//主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN
        $accountToken= '9172a9db6b3f451c9f9e49f4b8c2d43a';

//应用Id，在官网应用列表中点击应用，对应应用详情中的APP ID
//在开发调试的时候，可以使用官网自动为您分配的测试Demo的APP ID
        $appId='8a216da8679d0e9d0167c4f083d91752';

//请求地址
//沙盒环境（用于应用开发调试）：sandboxapp.cloopen.com
//生产环境（用户应用上线使用）：app.cloopen.com
        $serverIP='app.cloopen.com';


//请求端口，生产环境和沙盒环境一致
        $serverPort='8883';

//REST版本号，在官网文档REST介绍中获得。
        $softVersion='2013-12-26';

        $rest = new \CCPRestSmsSDK($serverIP, $serverPort, $softVersion);
        $rest->setAccount($accountSid, $accountToken);
        $rest->setAppId($appId);

        // 发送模板短

        $arr = array();
        $arr[0] = mt_rand(100000, 999999);
        $arr[1] = '5';



        $result = $rest->sendTemplateSMS($phone, $arr, '402549');

//        var_dump($result);
//        print $result->statusCode;


        if ($result->statusCode == '000000') {
            $phoneModel = new PhoneModel();

            $data = [
                'phone' => $phone,
                'sms' => $arr[0]
            ];
            $res = $phoneModel->where('phone', $phone)->find();

            if ($res) {
                $phoneModel->where('phone', $phone)->update([
                    'sms' => $arr[0],
                    'update_time' => time()
                ]);
            } else {

                $phoneModel->data($data)->save();

            }
            return $result->statusCode;

        } else {
            return $result->statusCode;
        }


    }




}